package com.furb.pub.persistencia;

import java.io.Serializable;
import java.util.List;

import com.furb.pub.config.Configuracao;
import com.furb.pub.config.EnPropriedade;

/**
 * 
 * @author Fernando
 * 
 * @param <T>
 */
public interface IDao<T> extends Serializable {

    String EXTENSAO = Configuracao.get(EnPropriedade.EXTENSAO.getChave());

    /**
     * Altera o objeto passado
     * 
     * @param obj
     */
    boolean alterar(T obj);

    /**
     * Insere o objeto passado
     * 
     * @param obj
     */
    boolean inserir(T obj);

    /**
     * Exclui o objeto passado
     * 
     * @param obj
     */
    boolean excluir(T obj);

    /**
     * @return lista com todos os objetos
     */
    List<T> listar();

    /**
     * Busca e retorna um objeto atraves de um filtro
     * 
     * @param parametros para a pesquisa
     * 
     * @return T
     */
    T find(String... params);

}
